Congestion control and resource sharing techniques implemented in today's networks have limited performance and effectiveness. This is mainly because network congestion information is distributed and is based on limited knowledge about the congestion status of the network. Decisions on how to adjust transmission rates are independently made by each node. This independent decision process is the fundamental reason of sub-optimal resource utilization and unfairness experienced by the users.
On the Internet, packet loss can occur as a result of transmission errors, but most commonly as a result of congestion. The end-to-end congestion control mechanism used by Transport Control Protocol (TCP) reacts to packet loss by reducing the number of outstanding unacknowledged data segments allowed in the network. More specifically, TCP flows with similar round-trip times (RTTs) that share a common bottleneck reduce their rates so that the available bandwidth will be, in the ideal case, distributed equally among them. TCP's end-to-end congestion control mechanism, as well as other existing congestion control techniques, control relative flow rates using distributed methods. These distributed methods are designed to achieve certain defined goals, such as flow rate fairness, examples of which include weighted fair queuing, TCP congestion control and TCP-friendly rate control.
However, the distributed methods used in today's networks generally require the cooperation of end hosts. As the decisions are made distributedly by each individual end host (e.g., router), the decisions may sometimes unable to reflect the real-time changing conditions of the networks. Thus, the existing distributed techniques often lead to sub-optimal decisions. Therefore, there is a need for improving the congestion control techniques for large scale carrier networks.